<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 数组去重第一种方法:
        // var nums = [1, 15, 20, 1, 32, 7, 3, 1, 2, 7, 4, 7, 9];
        // push()
        // indexOf()
        //准备一个空数组   遍历原数组  
        // 挨个判断原数组的每个元素是否在新数组中 不在 就把元素加进去 
        // 新数组中最后一定是唯一的元素  

        //     var data = [];
        //     for(var v of nums){
        //         if(data.indexOf(v) == -1){
        //             data.push(v);
        //         }
        //     }

        //     console.log(data)
        // 第二种 
        // 前后比较   如果相同 删除后一个  
        // 前提 得先排序   只有排序才能把相同的挨在一起

        function quick_sort(arr) {
            if (arr.length <= 1) {
                return arr;
            }
            var point = arr[arr.length - 1];
            var left = [], right = [];
            for (var i = 0; i < arr.length - 1; i++) {
                if (arr[i] < point) {
                    left.push(arr[i])
                }
                else {
                    right.push(arr[i])
                }
            }
            return quick_sort(left).concat(point, quick_sort(right))


        }

        // var res = quick_sort(nums);

        // for(var i=0;i<res.length-1;i++){
        //     if(res[i]==res[i+1]){
        //          res.splice(i+1,1);
        //          i--;
        //     }
        // }
        // console.log(res)

        //第三种  
        // var nums = [1, 15, 20, 1, 32, 7, 3, 1, 2, 7, 4, 7, 9];
        // // 数组.indexOf(元素,从哪个位置开始往后查找)
        // // 返回元素第一次出现的位置  找不到返回-1
        // // 始终从下一个元素到最后 查找这个元素是否在这个范围内
        // for(var i=0;i<nums.length-1;i++){
            
        //     var index = nums.indexOf(nums[i],i+1);
        //     if(index != -1){
        //         nums.splice(index,1);
        //         i--;
        //     }

            // var index = nums.lastIndexOf(nums[i]);
            // if(index != -1){
            //     nums.splice(index,1);
            // }
        
        // }

        // console.log(nums)


        // 第四种方法    使用集合数据结构  
        // 集合里边的元素 一定唯一的  
        // 数组转成集合  集合再转回数组   
        var nums = [1, 15, 20, 1, 32, 7, 3, 1, 2, 7, 4, 7, 9];
        var s = new Set(nums);
        console.log(s);

        // 把集合转回数组  

        // 1 集合转回数组  
        // var res1 = Array.from(s); 
        // console.log(res1);

        // 2. 集合转回数组
        // 把集合中的数据 取出来  然后放到空数组中
        // ... 展开运算符  
        // 可以展开 数组可以展开对象 可以展开集合 可以展开 map
                // 可迭代對象   
        // []
        // 对象的键 可以重复   后边会把前面覆盖掉 
        // var obj = {'k6':'v6','a':'b'}
        // var obj1 = {'k1':'v1','k2':'v2','k3':'v3','k4':'v4','d':'e'}
        // var obj2 = {...obj,...obj1}
        // console.log(obj2)
        // var num1 = [1,2,3]
        // var num2 = [4,5,6]
        // var num3 = [...num1,...num2]
        // console.log(num3)

         // 集合转数组的方法2
         var data = [...s]
         console.log(data);
    // </script>
</body>

</html>